////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  tuningsetmanager.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


#include "parametersetmanager.h"
#include "parametermodule.h"
#include "parametertypes.h"
#include "aecstartup.h"
#include "aecflash.h"
#include "aecextension.h"
#include "aecsnapshotctrl.h"
#include "aecconvergence.h"
#include "aecstatsconfig.h"
#include "aecarbitration.h"
#include "aectouch.h"
#include "aecface.h"
#include "aecmetering.h"
#include "modspecilluv1.h"
#include "modbgstatsconfigv1.h"
#include "moddsfv1.h"
#include "modmlczv1.h"
#include "moddistwvv1.h"
#include "modawbinitv1.h"
#include "modflashrefptv1.h"
#include "modflashdecv1.h"
#include "modsensorcalv1.h"
#include "modawbbestshotv1.h"
#include "modtmpconvv1.h"
#include "modawbfaceassistv1.h"
#include "modilluwvv1.h"
#include "modsaagwv1.h"
#include "modhistctrlv1.h"
#include "modsagenv1.h"
#include "modmwbv1.h"
#include "modflashwv1.h"
#include "modcustrefptv1.h"
#include "modrefptv1.h"
#include "moddav1.h"
#include "moddualcamsyncv1.h"
#include "modsfstatscrv1.h"
#include "modtrigladjv1.h"
#include "modsfsubsmpv1.h"
#include "afdtuning.h"
#include "rertuning.h"
#include "asdtuning.h"
#include "afsoftwarestatelements.h"
#include "afmonitorelements.h"
#include "afdciafelements.h"
#include "afbafelements.h"
#include "afalgotuningelements.h"
#include "afpdafelements.h"
#include "afpdlibelements.h"
#include "afcontrastafelements.h"
#include "afhafelements.h"
#include "aftofelements.h"
#include "gtm_1_0_0.h"
#include "hnr_1_0_0.h"
#include "tintless_2_0_0.h"
#include "cst_1_2_0.h"
#include "hdrvideo_1_0_0.h"
#include "ica_1_0_0.h"
#include "cc_1_2_0.h"
#include "tmc_1_0_0.h"
#include "tdl_1_0_0.h"
#include "demux_1_3_0.h"
#include "gra_1_0_0.h"
#include "tf_1_0_0.h"
#include "gic_3_0_0.h"
#include "lrme_1_0_0.h"
#include "anr_1_0_0.h"
#include "abf_3_4_0.h"
#include "bls_1_2_0.h"
#include "asf_3_0_0.h"
#include "eis_1_0_0.h"
#include "gamma_1_6_0.h"
#include "upscale_2_0_0.h"
#include "ltm_1_3_0.h"
#include "abf_4_0_0.h"
#include "mf_1_0_0.h"
#include "lsc_3_4_0.h"
#include "bpcbcc_5_0_0.h"
#include "linearization_3_4_0.h"
#include "linearization_3_3_0.h"
#include "cs_2_0_0.h"
#include "gamma_1_5_0.h"
#include "pedestal_1_3_0.h"
#include "demosaic_3_6_0.h"
#include "cv_1_2_0.h"
#include "hdr_2_2_0.h"
#include "hdr_2_0_0.h"
#include "pdpc_2_0_0.h"
#include "cac_2_2_0.h"
#include "cc_1_3_0.h"
#include "ds4to1_1_0_0.h"
#include "pdpc_1_1_0.h"
#include "sce_1_1_0.h"

#define TUNING_DEFAULT_MODULE_COUNT 105
#ifndef TUNINGSETMANAGER_H
#define TUNINGSETMANAGER_H

#include <iostream>
#include <unordered_map>

class TuningSetManager : public ParameterSetManager
{
public:
    TuningSetManager();
    virtual ~TuningSetManager()
    {
        for (UINT32 i = 0; i < TUNING_DEFAULT_MODULE_COUNT; i++)
        {
            PARAMETER_DELETE m_defaultModules[i];
        }
    }

    aecStartUp::AECStartUpType* GetModule_StartUp(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecFlash::AECFlashType* GetModule_Flash(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecExtension::AECCoreExtensionType* GetModule_Extension(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecSnapshotCtrl::AECSnapshotCtrlType* GetModule_SnapshotControl(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecConvergence::AECCoreConvergenceType* GetModule_Convergence(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecStatsConfig::AECStatsConfig* GetModule_StatsDefaultConfig(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecArbitration::AECCoreArbitrationType* GetModule_Arbitration(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecTouch::AECTouchType* GetModule_Touch(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecFace::AECFaceType* GetModule_Face(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aecMetering::AECCoreMeteringType* GetModule_Metering(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modspecilluv1::chromatixspecilluv1type* GetModule_ledTorchV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modspecilluv1::chromatixspecilluv1type* GetModule_lcdFlashV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modbgstatsconfigv1::chromatixBGStatsConfigV1Type* GetModule_bgStatsConfigV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    moddsfv1::chromatixDSFV1Type* GetModule_DSFV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modmlczv1::chromatixMLCZV1Type* GetModule_SFMLCZV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    moddistwvv1::chromatixDistWVV1Type* GetModule_SFDistWVV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modawbinitv1::chromatixAWBInitV1Type* GetModule_initDataV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modflashrefptv1::chromatixFlashRefPtV1Type* GetModule_flashRefPtV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modflashdecv1::chromatixFlashDecV1Type* GetModule_flashDecV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modsensorcalv1::chromatixSenorCalV1Type* GetModule_sensorCalV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modawbbestshotv1::chromatixAWBBestShotV1Type* GetModule_bestShotV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modtmpconvv1::chromatixTmpConvV1Type* GetModule_tmpConvV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modawbfaceassistv1::chromatixAWBFaceAssistV1Type* GetModule_faceAssistV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modilluwvv1::chromatixIlluWVV1Type* GetModule_SFIlluWVV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modsaagwv1::chromatixSAAGWV1Type* GetModule_SAAGWV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modhistctrlv1::chromatixHistCtrlV1Type* GetModule_histCtrlV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modsagenv1::chromatixSAGenV1ArrayType* GetModule_SAGenV1DataArray(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modmwbv1::chromatixMWBV1Type* GetModule_MWBGainV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modflashwv1::chromatixFlashWV1Type* GetModule_flashWV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modcustrefptv1::chromatixCustRefPtV1type* GetModule_custRefPtV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modrefptv1::chromatixRefPtV1Type* GetModule_refPtV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    moddav1::chromatixDAV1Type* GetModule_DAV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    moddualcamsyncv1::chromatixdualcamSyncV1Type* GetModule_dualcamSyncV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modsfstatscrv1::chromatixSFStatScrV1Type* GetModule_SFStatScrV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modtrigladjv1::chromatixTriglAdjV1Type* GetModule_triglGAV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    modsfsubsmpv1::chromatixSFSubSmpV1Type* GetModule_SFSubSmpV1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afdTuning::chromatix_auto_flicker_detection_data_type* GetModule_ChromatixAFDTuningData(
        TuningMode* modeBranch,
        UINT32 modeCount);

    rerTuning::ChromatixRedEyeReduction* GetModule_ChromatixRERTuningData(
        TuningMode* modeBranch,
        UINT32 modeCount);

    asdTuning::ChromatixASDTuningType* GetModule_ChromatixASDTuningData(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afsoftwarestatelements::chromatixAFTuningSoftwareStatisticsType* GetModule_chromatixAFTuningSoftwareStatistics(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afmonitorelements::chromatixAFMONITORType* GetModule_chromatixAFMONITOR(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afdciafelements::chromatixDCIAFType* GetModule_chromatixDCIAF(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afbafelements::chromatixBAFType* GetModule_chromatixBAF(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afalgotuningelements::chromatixAFAlgoTuningType* GetModule_chromatixAFAlgoTuning(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afpdafelements::chromatixPDAFType* GetModule_chromatixPDAF(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afpdlibelements::chromatixPDLibType* GetModule_chromatixPDLib(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afcontrastafelements::chromatixContrastAFType* GetModule_chromatixContrastAF(
        TuningMode* modeBranch,
        UINT32 modeCount);

    afhafelements::chromatixHAFType* GetModule_chromatixHAF(
        TuningMode* modeBranch,
        UINT32 modeCount);

    aftofelements::chromatixTOFType* GetModule_chromatixTOF(
        TuningMode* modeBranch,
        UINT32 modeCount);

    gtm_1_0_0::chromatix_gtm10Type* GetModule_gtm10_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    gtm_1_0_0::chromatix_gtm10Type* GetModule_gtm10_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    hnr_1_0_0::chromatix_hnr10Type* GetModule_hnr10_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    tintless_2_0_0::chromatix_tintless20Type* GetModule_tintless20_sw(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cst_1_2_0::chromatix_cst12Type* GetModule_cst12_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cst_1_2_0::chromatix_cst12Type* GetModule_cst12_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cst_1_2_0::chromatix_cst12Type* GetModule_cst12_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    hdrvideo_1_0_0::chromatix_hdrvideo10Type* GetModule_hdrvideo10_sw(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ica_1_0_0::chromatix_ica10Type* GetModule_ica10_ipe_module1(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ica_1_0_0::chromatix_ica10Type* GetModule_ica10_ipe_module2(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cc_1_2_0::chromatix_cc12Type* GetModule_cc12_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    tmc_1_0_0::chromatix_tmc10Type* GetModule_tmc10_sw(
        TuningMode* modeBranch,
        UINT32 modeCount);

    tdl_1_0_0::chromatix_tdl10Type* GetModule_tdl10_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    demux_1_3_0::chromatix_demux13Type* GetModule_demux13_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    demux_1_3_0::chromatix_demux13Type* GetModule_demux13_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    gra_1_0_0::chromatix_gra10Type* GetModule_gra10_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    tf_1_0_0::chromatix_tf10Type* GetModule_tf10_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    gic_3_0_0::chromatix_gic30Type* GetModule_gic30_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    lrme_1_0_0::chromatix_lrme10Type* GetModule_lrme10_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    anr_1_0_0::chromatix_anr10Type* GetModule_anr10_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    abf_3_4_0::chromatix_abf34Type* GetModule_abf34_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    bls_1_2_0::chromatix_bls12Type* GetModule_bls12_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    bls_1_2_0::chromatix_bls12Type* GetModule_bls12_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    asf_3_0_0::chromatix_asf30Type* GetModule_asf30_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    eis_1_0_0::chromatix_eis10Type* GetModule_eis10_sw(
        TuningMode* modeBranch,
        UINT32 modeCount);

    gamma_1_6_0::chromatix_gamma16Type* GetModule_gamma16_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    gamma_1_6_0::chromatix_gamma16Type* GetModule_gamma16_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    upscale_2_0_0::chromatix_upscale20Type* GetModule_upscale20_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ltm_1_3_0::chromatix_ltm13Type* GetModule_ltm13_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    abf_4_0_0::chromatix_abf40Type* GetModule_abf40_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    mf_1_0_0::chromatix_mf10Type* GetModule_mf10_sw(
        TuningMode* modeBranch,
        UINT32 modeCount);

    lsc_3_4_0::chromatix_lsc34Type* GetModule_lsc34_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    lsc_3_4_0::chromatix_lsc34Type* GetModule_lsc34_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    bpcbcc_5_0_0::chromatix_bpcbcc50Type* GetModule_bpcbcc50_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    linearization_3_4_0::chromatix_linearization34Type* GetModule_linearization34_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    linearization_3_3_0::chromatix_linearization33Type* GetModule_linearization33_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cs_2_0_0::chromatix_cs20Type* GetModule_cs20_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    gamma_1_5_0::chromatix_gamma15Type* GetModule_gamma15_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    pedestal_1_3_0::chromatix_pedestal13Type* GetModule_pedestal13_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    pedestal_1_3_0::chromatix_pedestal13Type* GetModule_pedestal13_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    demosaic_3_6_0::chromatix_demosaic36Type* GetModule_demosaic36_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    demosaic_3_6_0::chromatix_demosaic36Type* GetModule_demosaic36_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cv_1_2_0::chromatix_cv12Type* GetModule_cv12_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    hdr_2_2_0::chromatix_hdr22Type* GetModule_hdr22_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    hdr_2_0_0::chromatix_hdr20Type* GetModule_hdr20_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    pdpc_2_0_0::chromatix_pdpc20Type* GetModule_pdpc20_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cac_2_2_0::chromatix_cac22Type* GetModule_cac22_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cc_1_3_0::chromatix_cc13Type* GetModule_cc13_bps(
        TuningMode* modeBranch,
        UINT32 modeCount);

    cc_1_3_0::chromatix_cc13Type* GetModule_cc13_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ds4to1_1_0_0::chromatix_ds4to1v10Type* GetModule_ds4to1v10_bps_full_dc4(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ds4to1_1_0_0::chromatix_ds4to1v10Type* GetModule_ds4to1v10_bps_dc4_dc16(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ds4to1_1_0_0::chromatix_ds4to1v10Type* GetModule_ds4to1v10_ife_full_dc4(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ds4to1_1_0_0::chromatix_ds4to1v10Type* GetModule_ds4to1v10_ife_dc4_dc16(
        TuningMode* modeBranch,
        UINT32 modeCount);

    ds4to1_1_0_0::chromatix_ds4to1v10Type* GetModule_ds4to1v10_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);

    pdpc_1_1_0::chromatix_pdpc11Type* GetModule_pdpc11_ife(
        TuningMode* modeBranch,
        UINT32 modeCount);

    sce_1_1_0::chromatix_sce11Type* GetModule_sce11_ipe(
        TuningMode* modeBranch,
        UINT32 modeCount);


protected:
    virtual const ParameterModule* GetDefaultModule(
        char* type)
    {
        const ParameterModule* module = (const ParameterModule*)m_moduleMap[type];

        return module;
    }

    const ParameterModule* m_defaultModules[TUNING_DEFAULT_MODULE_COUNT];
    std::unordered_map<std::string, void*> m_moduleMap;
};

#endif

